home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyo (Python 2.5)
-
- __revision__ = '$Id: delay.py 567 2005-03-29 20:08:55Z jajcus $'
- __docformat__ = 'restructuredtext en'
- import libxml2
- import logging
- from pyxmpp.utils import to_utf8, from_utf8
- from pyxmpp.xmlextra import get_node_ns_uri
- from pyxmpp.objects import StanzaPayloadObject
- from pyxmpp.xmlextra import xml_element_iter
- from pyxmpp.jabber.dataforms import DATAFORM_NS, Form
- REGISTER_NS = 'jabber:iq:register'
- legacy_fields = {
- 'username': ('text-single', u'Account name associated with the user'),
- 'nick': ('text-single', u'Familiar name of the user'),
- 'password': ('text-private', u'Password or secret for the user'),
- 'name': ('text-single', u'Full name of the user'),
- 'first': ('text-single', u'First name or given name of the user'),
- 'last': ('text-single', u'Last name, surname, or family name of the user'),
- 'email': ('text-single', u'Email address of the user'),
- 'address': ('text-single', u'Street portion of a physical or mailing address'),
- 'city': ('text-single', u'Locality portion of a physical or mailing address'),
- 'state': ('text-single', u'Region portion of a physical or mailing address'),
- 'zip': ('text-single', u'Postal code portion of a physical or mailing address'),
- 'phone': ('text-single', u'Telephone number of the user'),
- 'url': ('text-single', u'URL to web page describing the user'),
- 'date': ('text-single', u'Some date (e.g., birth date, hire date, sign-up date)'),
- 'misc': ('text-single', u'Free-form text field (obsolete)'),
- 'text': ('text-single', u'Free-form text field (obsolete)'),
- 'key': ('text-single', u'Session key for transaction (obsolete)') }
-
- class Register(StanzaPayloadObject):
- xml_element_name = 'query'
- xml_element_namespace = REGISTER_NS
-
- def __init__(self, xmlnode = None):
- self._Register__logger = logging.getLogger('pyxmpp.jabber.Register')
- self.form = None
- self.registered = False
- self.instructions = None
- self.remove = False
- for f in legacy_fields:
- setattr(self, f, None)
-
- if isinstance(xmlnode, libxml2.xmlNode):
- self._Register__from_xml(xmlnode)
-
-
-
- def __from_xml(self, xmlnode):
- self._Register__logger.debug('Converting jabber:iq:register element from XML')
- if xmlnode.type != 'element':
- raise ValueError, 'XML node is not a jabber:iq:register element (not an element)'
-
- ns = get_node_ns_uri(xmlnode)
- if ns or ns != REGISTER_NS or xmlnode.name != 'query':
- raise ValueError, 'XML node is not a jabber:iq:register element'
-
- for element in xml_element_iter(xmlnode.children):
- ns = get_node_ns_uri(element)
- if ns == DATAFORM_NS and element.name == 'x' and not (self.form):
- self.form = Form(element)
- elif ns != REGISTER_NS:
- continue
-
- name = element.name
- if name == 'instructions' and not (self.instructions):
- self.instructions = from_utf8(element.getContent())
- continue
- if name == 'registered':
- self.registered = True
- continue
- if name == 'remove':
- self.remove = True
- continue
- if name in legacy_fields and not getattr(self, name):
- value = from_utf8(element.getContent())
- if value is None:
- value = u''
-
- self._Register__logger.debug(u'Setting legacy field %r to %r' % (name, value))
- setattr(self, name, value)
- continue
-
-
-
- def complete_xml_element(self, xmlnode, doc):
- ns = xmlnode.ns()
- if self.instructions is not None:
- xmlnode.newTextChild(ns, 'instructions', to_utf8(self.instructions))
-
- if self.form:
- self.form.as_xml(xmlnode, doc)
-
- if self.remove:
- xmlnode.newChild(ns, 'remove', None)
- elif self.registered:
- xmlnode.newChild(ns, 'registered', None)
-
- for field in legacy_fields:
- value = getattr(self, field)
- if value is not None:
- xmlnode.newTextChild(ns, field, to_utf8(value))
- continue
-
-
-
- def get_form(self, form_type = 'form'):
- if self.form:
- if self.form.type != form_type:
- raise ValueError, 'Bad form type in the jabber:iq:register element'
-
- return self.form
-
- form = Form(form_type, instructions = self.instructions)
- form.add_field('FORM_TYPE', [
- u'jabber:iq:register'], 'hidden')
- for field in legacy_fields:
- (field_type, field_label) = legacy_fields[field]
- value = getattr(self, field)
- if value is None:
- continue
-
- if form_type == 'form':
- if not value:
- value = None
-
- form.add_field(name = field, field_type = field_type, label = field_label, value = value, required = True)
- continue
- form.add_field(name = field, value = value)
-
- return form
-
-
- def submit_form(self, form):
- result = Register()
- if self.form:
- result.form = form.make_submit()
- return result
-
- if 'FORM_TYPE' not in form or 'jabber:iq:register' not in form['FORM_TYPE'].values:
- raise ValueError, 'FORM_TYPE is not jabber:iq:register'
-
- for field in legacy_fields:
- self._Register__logger.debug(u'submitted field %r' % (field,))
- value = getattr(self, field)
-
- try:
- form_value = form[field].value
- except KeyError:
- if value:
- raise ValueError, 'Required field with no value!'
- continue
- continue
-
- setattr(result, field, form_value)
-
- return result
-
-
-